package com.designpattern.singleton.lazysingleton;

public class LazySingleton {
    private volatile static LazySingleton instance;

    private LazySingleton() {
    }

    public static LazySingleton getInstance() {
        if (instance == null) {
            synchronized (LazySingleton.class) {
                if (instance == null) {
                    instance = new LazySingleton();
//可能因为重排序，返回空指针  通过volatile 禁止
//                    字节码层
//                    JIT，CPU 优化指令进行指令重排，23可能会颠倒
//                    1.分配空间
//                    2.初始化
//                    3.引用赋值
                }
            }


        }
        return instance;
    }
}
